/**
 * @param {string} order
 * @param {string} s
 * @return {string}
 * order = "cbafg", s = "abcd"
 */
// 计数排序
var customSortString = function (order, s) {
    const letterMap = new Map()
    const letterArr = []

    for (let i = 0; i < s.length; i++) {
        // 计数排序，统计每个出现在order中的字符的出现次数
        if (order.indexOf(s[i]) !== -1) {
            if (letterMap.has(s[i])) {
                letterMap.set(s[i], letterMap.get(s[i]) + 1)
            } else {
                letterMap.set(s[i], 1)
            }
        } else {
            // 没出现的直接加入letterArr
            letterArr.push(s[i])
        }
    }

    for (let i = 0; i < order.length; i++) {
        // 根据order次序和map中的数目，把结果加入letterArr
        if (letterMap.has(order[i])) {
            for (let j = 0; j < letterMap.get(order[i]); j++) {
                letterArr.push(order[i])
            }
        }
    }

    // 返回letterArr拼接的字符串
    return letterArr.join('')
};

// 自定义排序 
var customSortString2 = function (order, s) {
    return s.split('').sort((a, b) => order.indexOf(a) - order.indexOf(b)).join('')
};

